package com.qijian.mold.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qijian.mold.domain.dto.*;
import com.qijian.mold.domain.entity.MoldChange;
import com.qijian.mold.domain.vo.moldChange.EqpVo;
import com.qijian.mold.domain.vo.moldChange.MoldChangeDownVo;
import com.qijian.mold.domain.vo.moldChange.MoldChangeListVo;
import com.qijian.mold.domain.vo.moldChange.WorkOrderDetailsVo;
import com.qijian.mold.domain.vo.user.UserDetailsVo;
import com.qijian.system.domain.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/** 换模信息
 * @author anni.zhu
 * @author anni.zhu@king-v.com
 * Created in 2025/3/29 17:22
 */
@Repository
public interface MoldChangeMapper extends BaseMapper<MoldChange> {
    /**
     * 根据设备id获取设备信息
     * @param eqpId
     * @return
     */
    EqpVo getEqpDetail(Long eqpId);

    /**
     * 根据设备code获取设备信息
     * @param code
     * @return
     */
    List<EqpVo> getEqpByCode(String code);

    /**
     * 根据工序单id查询获取工序详情
     * @param workOrderDetailId
     * @return
     */
    WorkOrderDetailsVo getWorkOrderDetails(Long workOrderDetailId);

    /**
     * 获取工单的完整工序流程
     * @param workOrderId
     * @return
     */
    List<String> getWorkOrderDetailFlowByOrderId(Long workOrderId);

    /**
     * 分页获取换模信息
     * @param dto
     * @return
     */
    Page<MoldChangeListVo> getByPage(SelectMoldChangeDto dto);

    /**
     * 根据当前用户获取换模申请单数据
     * @param dto
     * @return
     */
    Page<MoldChangeDownVo> getMoldChangeListByCurrentId(GetMoldChangeListByCurrentIdDto dto);

    /**
     * 获取设备列表
     * 不在进行中的换模申请单绑定的
     * @return
     */
    Page<EqpVo> getEqpList(GetEqpDto dto);

    /**
     * 获取工单列表
     * @return
     */
    Page<WorkOrderDetailsVo> getWorkOrderDetailsList(GetWorkOrderDetailsListDto dto);

    /**
     * 查看该用户是不是模具管理员
     * @param userId
     * @return
     */
    List<Long> getMoleRoleByUserId(@Param("userId") Long userId, @Param("roleKey")String roleKey);

    /**
     * 根据角色key获取用户
     * @return
     */
    Page<UserDetailsVo> getUserByRoleKey(GetUserDetailsByRoleTypeDto dto);

    /**
     * 根据ids获取用户
     * @param ids
     * @return
     */
    List<UserDetailsVo> getUserListByIds(@Param("ids") List<Long> ids);

    /**
     * 根据角色key和工段id获取操作员
     * @return
     */
    Page<UserDetailsVo> getOperatorByRoleKey(GetUserDetailsByRoleTypeDto dto);

    /**
     * 查看该用户是不是该角色和工段的操作员
     * @param roleKey
     * @param locationId
     * @param userId
     * @return
     */
    List<Long> getOperatorByLocationId(@Param("roleKey") String roleKey,@Param("locationId")Long locationId,@Param("userId") Long userId);
}
